package double_pointer;

public class twoSum {

    //查找总价格为目标值的两个商品

    public int[] twoSum(int[] price, int target) {
        //利用单调性，通过双指针算法解决问题
        //定义两个指针
        int left = 0;
        int right = price.length - 1;
        while (left < right) {
            if (price[left] + price[right] < target) {
                left++;
            } else if (price[left] + price[right] > target) {
                right--;
            } else {
                return new int[]{price[left], price[right]};
            }
        }
        return new int[0];//照顾编译器，随便返回一个就行


        // //暴力枚举超时！
        // //用一个指针 i 固定一个数，用另外一个指针 j 去遍历 i 之后的数
        // //新建一个数组
        // int[] ret = new int[2];
        // for (int i = 0; i < price.length - 1; i++) {
        //     for (int j = i + 1; j < price.length; j++) {
        //         if (price[i] + price[j] == target) {
        //             ret[0] = price[i];
        //             ret[1] = price[j];
        //             return ret;
        //         }
        //     }
        // }
        // return null;
    }
}
